package com.java.al.swing;

import java.util.concurrent.TimeUnit;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;

public class SubmitLabelManipulationTask {

	/**
	 * Swing 有其自己的专用线程来接受UI事件并更新屏幕,
	 * 其他线程应该通过Swing事件来分发线程提交要执行的任务.
	 * SwingUtilities.invokeLater( new Runnable() )通过分发线程将任务放置到(最终将执行的) 待执行事件队列中.
	 * Swing 在执行队列中的事件时,不会做其他事情;
	 */
	
	public static void main(String[] args) throws InterruptedException {
		JFrame frame = new JFrame( "Hello Swing!" );
		final JLabel label = new JLabel( "A Label!" );
		frame.add(label);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setSize(300,100);
		frame.setVisible( true );
		TimeUnit.SECONDS.sleep(1);
		SwingUtilities.invokeLater( new Runnable(){
			public void run(){
				label.setText( "Hey! This is defferent!" );
			}
		});
	}

}
